import java.util.ArrayList;
import java.util.List;

public class _6findAnagrams {
    //找到字符串中所有字母异位词
    public List<Integer> findAnagrams(String ss, String pp) {
        List<Integer> ret = new ArrayList<>();
        char[] s = ss.toCharArray();
        char[] p = pp.toCharArray();

        int[] hash1 =new int[26];
        for(char ch : p) hash1[ch - 'a']++;
        int n = p.length;
        int[] hash2 =new int[26];

        for(int left=0,right=0,count=0;right<s.length;right++){

            char in = s[right];
            if(hash2[in - 'a']++ < hash1[in - 'a']) count++;
            if(right - left + 1 > n){
                char out = s[left++];
                if(hash2[out - 'a']-- <= hash1[out - 'a']) count--;
            }
            if(count == n) ret.add(left);
        }
        return ret;
    }
}
